package cn.tedu.order;

import com.zaxxer.hikari.HikariDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
    自定义的数据源自动配置类，与Spring中默认的数据源自动配置类冲突
    需要在Spring中，排除Spring默认的自动配置
 */
@Configuration
public class DataSourceAutoConfiguration {
    // 创建原始数据源
    // Hikari使用的数据库地址参数不是url，而是jdbcUrl
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new HikariDataSource();
    }

    // 创建数据源代理对象
    @Bean
    @Primary // 首选对象
    public DataSource dataSourceProxy(DataSource dataSource) {
        return new DataSourceProxy(dataSource);
    }
}
